--------------------------------------------------------------------------------
-- File: marquage_accessible.ads
--------------------------------------------------------------------------------

PACKAGE marquage_accessible IS
        
  nbPlace      : INTEGER := 50;
  nbTransition : INTEGER := 50;
  

  TYPE MarquageAccessible;
  TYPE Marquage    IS ARRAY (1..nbPlace)      of INTEGER;
  TYPE tabMarquage IS ARRAY (1..nbTransition) of INTEGER;

  TYPE MarquageAccessible IS
      RECORD
          M           : Marquage;
          suivant     : tabMarquage;
      END RECORD;

  --Initialise un Marquage Accessible
  PROCEDURE create    (marqAcc : IN OUT MarquageAccessible; marq : IN Marquage) ;

  --Affiche un Marquage Accessible
  PROCEDURE Put       (marqAcc : IN MarquageAccessible; iterator : IN INTEGER) ;

  --Test l'egalite entre deux marquages
  FUNCTION  Egal      (marq1 : IN Marquage; marq2 : IN Marquage) RETURN BOOLEAN ;

  --Test l'operation superieur ou egale sur deux marquages
  FUNCTION  SupEgal   (marq1 : IN Marquage; marq2 : IN Marquage) RETURN BOOLEAN ;

  --Test si les deux marquages sont des multiples
  PROCEDURE BecomeMultiple (marq1 : IN OUT Marquage; marq2 : IN Marquage);

END marquage_accessible;
